home *** CD-ROM | disk | FTP | other *** search
-
-
- char *memmove(dest, src, cnt)
- char *dest, *src;
- unsigned cnt;
- {
- char *p;
-
- p = dest;
- while (cnt--)
- *dest++ = *src++;
- return (p);
- }
-
-
-
-
-
- SHR CX,1 ; convert bytes to words (divide CX by 2)
- JZ MovByte ; jump if number of words is zero
- REP MOVSW ; move a word at a time
- MovByte: JNC Done ; jump if number of bytes is zero
- MOVSB ; move the byte
- Done:
-
-
-
- /*
- ** movtst.c -- program to test the functions moveleft, moveright
- ** and memmove.
- */
-
- char string[] = { "This is the text in this array" };
- char string2[] = { "This is another, second array" };
-
- main()
- {
- char *retval, *moveleft(), *moveright(), *memmove();
-
- printf("string = -->%s<--\n", string);
- retval = moveright(string, &string[9], 10);
- printf("string = -->%s<--\n", string);
- printf("retval = -->%s<--\n", retval);
- retval = moveleft(&string[2], string, 10);
- printf("string = -->%s<--\n", string);
- printf("retval = -->%s<--\n", retval);
- retval = moveleft(&string[1], &string[22], 8);
- printf("string = -->%s<--\n", string);
- printf("retval = -->%s<--\n", retval);
-
- printf("\nstring2 = -->%s<--\n", string2);
- retval = memmove(&string2[9], &string2[16], 13);
- printf("string2 = -->%s<--\n", string2);
- printf("retval = -->%s<--\n", retval);
- retval = memmove(&string2[17], &string2[10], 12);
- printf("string2 = -->%s<--\n", string2);
- printf("retval = -->%s<--\n", retval);
- }
-
- Running this program should produce the following output:
-
- string = -->This is the text in this array<--
- string = -->ne text ine text in this array<--
- retval = -->ne text ine text in this array<--
- string = -->nenenenenenetext in this array<--
- retval = -->nenenenenetext in this array<--
- string = -->nis arrayenetext in this array<--
- retval = -->is arrayenetext in this array<--
-
- string2 = -->This is another, second array<--
- string2 = -->This is a second arrayd array<--
- retval = --> second arrayd array<--
- string2 = -->This is a second second array<--
- retval = -->second array<--
-
-
-